﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Collections.Generic;

namespace DocTes.Jerarquias
{
    /// <summary>
    /// 
    /// </summary>
    public partial class ControlEstadosDocumento : System.Web.UI.UserControl
    {
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Page_Load(object sender, EventArgs e)
        {

        }



        

        /// <summary>
        /// Propiedad para tener el id del proyecto del control.
        /// </summary>
        public string IdProyecto
        {
            get
            {
                return HiddenFieldIdProyecto.Value;
            }
            set
            {
                HiddenFieldIdProyecto.Value = value;
                ObtenerDataSourceEstados();
            }
        }
        /// <summary>
        /// Id del documento relacionado
        /// </summary>
        public string IdDocumento
        {
            get
            {
                return HiddenFieldIdDocumento.Value;
            }
            set
            {
                HiddenFieldIdDocumento.Value = value;
                ObtenerDataSourceEstados();
            }
        }
        /// <summary>
        /// Cambia los valores del control
        /// </summary>
        /// <param name="idProyecto">Identificador del proyecto</param>
        /// <param name="idDocumento">Identificador del documento</param>
        public void CambiarValoresControl(string idProyecto, string idDocumento)
        {
            HiddenFieldIdProyecto.Value = idProyecto;
            HiddenFieldIdDocumento.Value = idDocumento;
            ObtenerDataSourceEstados();
        }


        /// <summary>
        /// Obtiene el datasource de los estados
        /// </summary>
        private void ObtenerDataSourceEstados()
        {
           // OcultarPanelInsertarEstados();
            Administrador admin = new Administrador(new FabricaLinqDataSource(), new EntidadLinqDataContext());
            List<InfoEstadosDocumentosProyecto> datasourceEstados = admin.GetDataSourceEstadosDocumentosProyecto(HiddenFieldIdProyecto.Value, HiddenFieldIdDocumento.Value);
            RepeaterEstados.DataSource = datasourceEstados;
            RepeaterEstados.DataBind();
           
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="source"></param>
        /// <param name="e"></param>
        protected void RepeaterEstados_ItemCommand(object source, RepeaterCommandEventArgs e)
        {

        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void ImageButtonAceptar_Click(object sender, ImageClickEventArgs e)
        {
            Administrador admin = new Administrador(new FabricaLinqDataSource(), new EntidadLinqDataContext());
            foreach (RepeaterItem estado in RepeaterEstados.Items)
            {
                

                CheckBox checkBoxSeleccionado = (CheckBox)(estado.FindControl("CheckBoxNombre"));
                HiddenField hiddenFieldIdEstadoAprobado = (HiddenField)(estado.FindControl("HiddenFieldIdAprobado"));
                HiddenField hiddenFieldIdEstadoRechazado = (HiddenField)(estado.FindControl("HiddenFieldIdRechazado"));


                admin.CambiarPosibleEstadoDocumento(IdProyecto, IdDocumento, hiddenFieldIdEstadoAprobado.Value, hiddenFieldIdEstadoRechazado.Value, checkBoxSeleccionado.Checked);

             }
            admin.Dispose();
            ObtenerDataSourceEstados();
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void ImageButtonCancelar_Click(object sender, ImageClickEventArgs e)
        {
            ObtenerDataSourceEstados();
        }

    }
}

